本文章同時發佈於:
大家好,這幾天較有時間,終於可以好好的思考文章 XD。由於最近周遭的朋友對安全性演算法這個詞時常感到高深莫測,這次就來介紹安全性演算法的應用吧!
安全性演算法是相當複雜的,但事實上他的應用概念
是很直覺的,我們不妨直接以應用來了解,演算法採用網路大家常用的 library 即可。
所以這幾篇文章會以實際應用來講解,不琢磨演算法細節。
P.S. 我是從演算法圖鑑這本書來了解安全性演算法的,因為安全性演算法的目標都一樣,所以文章內容雖然都是我內化的,但可能會許多雷同,請多多包涵 XD。
這些演算法到底要保護什麼事情,就是保護傳送
這個動作會產生的 4 個問題:
而這些問題可以透過以下 3 個方法來解決:
是怎麼解決的呢?以下會以小明
、線上早餐店阿姨
與在他們對話間做壞事的壞蛋
來講解。
答:
偷取傳輸過程中的資料
假設小明
要線上付款早餐店款項,理想如下圖:
❗ 但如果有壞蛋
從中攔截封包,就可以取得小明
的付款密碼:
怎麼防範?
將傳送的資料加密,這樣就算壞蛋偷走了也不知道資料內容
只要小明
與早餐店阿姨
有協議好一個雙方才知道的加解密方法,而壞蛋
不知道,就可以如以下模式運作:
答:
無法確認傳輸對象的身份
假設小明
要購買一杯大冰奶,理想如下圖:
❗ 但如果有壞蛋
也聲稱自己是小明
,就可以謊報資料:
怎麼防範?
傳輸人員在資料上產生一筆獨一無二的代碼供另一端驗證
此代碼可以是訊息識別碼
或數位簽章
,因為這兩種技術都可以讓資料產生獨一無二的代碼,小明
會透過金鑰與資料一起產生此代碼,早餐店阿姨
只需再接收到資料時再用金鑰與資料一起產生代碼,比對代碼是否相同即可判斷是不是小明
傳的:
答:
修改傳輸的資料
假設小明
要購買一杯大冰奶,理想如下圖:
❗ 但如果壞蛋
竄改了小明
的訂單,小明
就會收到不預期的回應:
怎麼防範?
與電子欺騙的解決方法相同,傳輸人員在資料上產生一筆獨一無二的代碼供另一端驗證
此代碼可以是訊息識別碼
或數位簽章
,因為這兩種技術都可以讓資料產生獨一無二的代碼,小明
會透過金鑰與資料一起產生此代碼,早餐店阿姨
只需再接收到資料時再用金鑰與資料一起產生代碼,比對代碼是否相同即可判斷是不是小明
傳的:
答:
無法證明傳輸方有做過這件事
❗ 假設小明
心懷不軌,買了一杯大冰奶卻不想付錢,他可以這樣做:
怎麼防範?
要求傳輸人員在資料上產生一筆獨一無二的代碼供另一端驗證
此代碼為數位簽章
,不可為訊息識別碼
,雖然兩者都可產生獨一無二的代碼,但訊息識別碼
是雙方
共同約定好的金鑰來產生代碼,而數位簽章
是小明
用個人金鑰
產生代碼,只有數位簽章
才可證明是小明
一位產生的,用訊息是別碼
會有可能是雙方任一端產生的。
小明
得透過個人金鑰
與資料一起產生此代碼,如果小明賴帳,早餐店阿姨
只需拿此代碼去跟小明討帳即可:
有了以上慨念後,在針對任何傳輸安全性的問題,你可以透過此表來思考到底要用何種技術解決:
竊聽 | 電子欺騙 | 竄改 | 抵賴 | |
---|---|---|---|---|
加密 | v | |||
訊息識別碼 | v | v | ||
數位簽章 | v | v | v |
丟棄
並不是這些演算法保護的目標